package com.zhijian.medical.entity.dto;

import com.zhijian.medical.entity.po.Person;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

/**
 * 人员dto
 *
 * @author HCG
 * @version 1.0
 * @date 2022/1/17
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Api(tags = "人员dto", hidden = true)
public class PersonDto implements Serializable {
    private static final long serialVersionUID = 7045597059478714546L;

    /**
     * id
     */
    @ApiModelProperty(value = "id", hidden = true)
    private Long id;

    /**
     * 负责人名称
     */
    @ApiModelProperty("负责人名称")
    private String name;

    /**
     * 负责人电话
     */
    @ApiModelProperty("负责人电话")
    private String phone;

    /**
     * 密码
     */
    @ApiModelProperty("密码")
    private String password;

    /**
     * 盐
     */
    @ApiModelProperty(value = "盐", hidden = true)
    private String salt;

    /**
     * 工号
     */
    @ApiModelProperty("工号")
    private String jobNumber;

    /**
     * 状态，0：在职，1：离职，2：进修
     */
    @ApiModelProperty("状态，0：在职，1：离职，2：进修")
    private Byte status;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String note;

    /**
     * 部门id数组
     */
    @ApiModelProperty("部门id数组")
    private List<Long> groupIds;

    /**
     * 角色id数组
     */
    @ApiModelProperty("角色id数组")
    private List<Long> roleIds;

    /**
     * 随机序号
     */
    private Integer sort;

    /**
     * 机构id，只有厂商人员才有此字段
     */
    @ApiModelProperty(value = "机构id，只有厂商人员才有此字段", hidden = true)
    private Long cooperativeInstitutionId;

    /**
     * 是否是专项培训人员，1：是，0或者空：否
     */
    @ApiModelProperty("是否是专项培训人员，1：是，0或者空：否")
    private Integer weatherZxpx;

    public static PersonDto mergeFromPo(Person person) {
        if (Objects.isNull(person)) {
            return null;
        }
        return PersonDto.builder()
                .id(person.getId())
                .name(person.getName())
                .phone(person.getPhone())
                .password(person.getPassword())
                .salt(person.getSalt())
                .jobNumber(person.getJobNumber())
                .status(person.getStatus())
                .note(person.getNote())
                .cooperativeInstitutionId(person.getCooperativeInstitutionId())
                .build();
    }
}
